﻿Public Class Cambiar_Contraseña_E

    Enum estado
        insertar
        modificar
    End Enum
    Enum termino
        aprobado
        rechazado
    End Enum

    Dim auxvalidar As Boolean = False

    Dim accion As estado = estado.insertar

    Dim acceso As New acceso_a_datos

    Private Sub Cambiar_Contraseña_E_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        mask_contraseña_nueva.Enabled = False
        mask_contraseña_repite.Enabled = False
        btn_Cambiar.Enabled = False
        boton_mostrar.Enabled = False
        Me.mask_contraseña_nueva.PasswordChar = "*"

    End Sub

    'Boton Cambiar
    Private Sub btn_Cambiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cambiar.Click

        If Me.validar(sender, e) = True Then
            If Me.mask_contraseña_nueva.Text <> Me.mask_contraseña_repite.Text Then
                MessageBox.Show("Las contraseñas no coinciden", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Exit Sub
            End If
            If Me.accion = estado.insertar Then
                Me.modificar()
            End If

            MessageBox.Show("Tu contraseña se cambio exitosamente", "No la olvides!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)

            Me.auxvalidar = False
            Me.limpiar()
            Me.Close()
            Usuario_Contraseña.Show()
            Usuario_Contraseña.btn_contraseña.Focus()
        End If
    End Sub

    'Limpiamos Campos
    Private Sub limpiar()
        Me.mask_contraseña.Text = ""
        Me.mask_contraseña_nueva.Text = ""
        Me.mask_contraseña_repite.Text = ""
    End Sub

    'Boton Validar Contraseña, Debe ser igual a la que esta guardada en el la Base de Datos
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Validar.Click
        Dim tabla As New Data.DataTable
        Dim usuario As String = frm_Acceso.txt_usuario.Text + frm_olvide_Constraseña.txt_usuario.Text
        Dim consulta As String = ""

        If Me.mask_contraseña.TextLength = 0 Then
            'MessageBox.Show("Tenes que ingresar una Contraseña", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Error)
            indicar_obligatorios(sender, e)
            mask_contraseña.Focus()
        Else
            Try
                consulta = "SELECT nombre_Usuario FROM Empleado "
                consulta += "WHERE (nombre_Usuario LIKE '" & usuario & "'"
                consulta += " AND contraseña_Usuario=HASHBYTES('SHA1', '" & Me.mask_contraseña.Text & "'))"
                tabla = acceso._consulta(consulta)
            Catch ex As Exception
            Finally
                If tabla.Rows.Count <> 0 Then
                    MessageBox.Show("Podes establecer tu nueva Contraseña", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                    mask_contraseña.Enabled = False
                    mask_contraseña_nueva.Enabled = True
                    mask_contraseña_repite.Enabled = True
                    btn_Cambiar.Enabled = True
                    btn_Validar.Enabled = False
                    Me.auxvalidar = True
                    boton_mostrar.Enabled = True
                Else
                    MessageBox.Show("Tu contraseña no es valida, volve a intentarlo", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Me.auxvalidar = False
                    Me.mask_contraseña.Text = ""
                End If
            End Try
        End If

        tabla.Reset()
    End Sub

    'VALIDAMOS LOS CAMPOS
    Private Function validar(ByVal sender As System.Object, ByVal e As System.EventArgs) As Boolean

        If Me.auxvalidar = False Then
            MessageBox.Show("Tenes que validar tu contraseña y que sea Correcta", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Error)
            mask_contraseña_nueva.Focus()
            Return False
        End If

        If mask_contraseña.Text = "" Then
            MessageBox.Show("Tenes que ingresar tu contraseña actual", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Error)

            mask_contraseña_nueva.Focus()
            Return False
        End If

        If mask_contraseña_nueva.Text = "" Then
            'MessageBox.Show("Tenes que ingresar una Contraseña Nueva", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Error)
            indicar_obligatorios(sender, e)
            mask_contraseña_nueva.Focus()
            Return False
        End If

        If mask_contraseña_repite.Text = "" Then
            'MessageBox.Show("Tenes que Repetir la Contraseña Nueva", "Importante", MessageBoxButtons.OK, MessageBoxIcon.Error)
            indicar_obligatorios(sender, e)
            mask_contraseña_repite.Focus()
            Return False
        End If

        Return True
    End Function

    'INSERTAMOS LA NUEVA CONTRASEÑA EN LA BD
    Private Function modificar() As termino

        Dim tabla As New Data.DataTable
        Dim modificacion As String = ""
        Dim usuario As String = frm_Acceso.txt_usuario.Text + frm_olvide_Constraseña.txt_usuario.Text

        modificacion = "UPDATE Empleado SET "
        modificacion &= "contraseña_Usuario = HASHBYTES('SHA1', '" & Me.mask_contraseña_nueva.Text & "')"
        modificacion &= " WHERE nombre_Usuario = '" & usuario & "'"
        acceso._modificar(modificacion)

        Return termino.aprobado
    End Function

    Private Sub btn_volver_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_volver.Click

        Me.limpiar()
        mask_contraseña.Enabled = True
        btn_Validar.Enabled = True
        mask_contraseña_nueva.Enabled = False
        mask_contraseña_repite.Enabled = False
        btn_Cambiar.Enabled = False
        Me.Close()
        Usuario_Contraseña.Show()
        Usuario_Contraseña.btn_contraseña.Focus()
    End Sub

    Private Sub Cambiar_Contraseña_E_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
        Dispose()
    End Sub

    Private Sub Button1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles boton_mostrar.MouseMove
        Me.mask_contraseña_nueva.PasswordChar = ""
    End Sub

    Private Sub Button1_MouseLeave(sender As System.Object, e As System.EventArgs) Handles boton_mostrar.MouseLeave
        Me.mask_contraseña_nueva.PasswordChar = "*"
    End Sub

    Private Sub mask_contraseña_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mask_contraseña.Leave
        If mask_contraseña.Text = "" And btn_volver.Focused = False Then
            lbl_contraseña_obligatorio.Visible = True
        Else
            lbl_contraseña_obligatorio.Visible = False
        End If
    End Sub

    Private Sub mask_contraseña_nueva_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mask_contraseña_nueva.Leave
        If mask_contraseña_nueva.Text = "" And mask_contraseña_nueva.Enabled = True And btn_volver.Focused = False Then
            lbl_nueva_obligatorio.Visible = True
        Else
            lbl_nueva_obligatorio.Visible = False
        End If
    End Sub

    Private Sub mask_contraseña_repite_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mask_contraseña_repite.Leave
        If mask_contraseña_repite.Text = "" And mask_contraseña_repite.Enabled = True And btn_volver.Focused = False Then
            lbl_repite_obligatorio.Visible = True
        Else
            lbl_repite_obligatorio.Visible = False
        End If
    End Sub
    Public Sub indicar_obligatorios(ByVal sender As System.Object, ByVal e As System.EventArgs)
        mask_contraseña_Leave(sender, e)
        mask_contraseña_nueva_Leave(sender, e)
        mask_contraseña_repite_Leave(sender, e)
    End Sub
End Class